public class TestDemo {
    //抽象类可以有普通成员方法，也可以有抽象方法
    //接口有普通的方法，那么就是被abstract修饰的方法，所以都是要被重写
    //default修饰的方法，我们可以不用去重写，但是我们也可以重写，根据需求吧

}
//在Java中，类和类之间是单继承的，一个类只能有一个父类，即Java中不支持多继承，但是一个类可以实现多个接口。
//在父类是放入一些共性的特点，而不是特有的，是共有的

//上面的代码展示了 Java 面向对象编程中最常见的用法: 一个类继承一个父类, 同时实现多种接口.
//继承表达的含义是 is - a 语义, 而接口表达的含义是 具有 xxx 特性 .

//时刻牢记多态的好处, 让程序猿忘记类型. 有了接口之后, 类的使用者就不必关注具体类型,
//而只关注某个类是否具备某种能力.

//抽象类于接口的区别？
//核心区别: 抽象类中可以包含普通方法和普通成员变量, 这样的普通方法和成员变量可以被子类直接使用(不必重写), 而接口中
//不能包含普通方法, 子类必须重写所有的抽象方法.
//抽象类存在的意义是为了让编译器更好的校验, 像 Animal 这样的类我们并不会直接使用, 而是使用它的子类.
//万一不小心创建了 Animal 的实例, 编译器会及时提醒我们.
